package com.ruoyi.system.service.impl;

import java.util.List;

import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.SysNovelClassifyMapper;
import com.ruoyi.system.domain.SysNovelClassify;
import com.ruoyi.system.service.ISysNovelClassifyService;

/**
 * 分类列表Service业务层处理
 * 
 * @author ZouYangMing
 * @date 2022-11-08
 */
@Service
public class SysNovelClassifyServiceImpl implements ISysNovelClassifyService 
{
    @Autowired
    private SysNovelClassifyMapper sysNovelClassifyMapper;

    @Autowired
    private RedisCache redisCache;

    private final String SYS_NOVEL_CLASSIFY = "sys_novel_classify:";

    /**
     * 查询分类列表
     * 
     * @param id 分类列表主键
     * @return 分类列表
     */
    @Override
    public SysNovelClassify selectSysNovelClassifyById(Long id)
    {
        SysNovelClassify classify = redisCache.getCacheObject(SYS_NOVEL_CLASSIFY + id);
        if(classify == null){
            SysNovelClassify classify1 = sysNovelClassifyMapper.selectSysNovelClassifyById(id);
            redisCache.setCacheObject(SYS_NOVEL_CLASSIFY + id, classify1);
            return classify1;
        }
        return classify;
    }

    /**
     * 查询分类列表列表
     * 
     * @param sysNovelClassify 分类列表
     * @return 分类列表
     */
    @Override
    public List<SysNovelClassify> selectSysNovelClassifyList(SysNovelClassify sysNovelClassify)
    {
        return sysNovelClassifyMapper.selectSysNovelClassifyList(sysNovelClassify);
    }

    /**
     * 新增分类列表
     * 
     * @param sysNovelClassify 分类列表
     * @return 结果
     */
    @Override
    public int insertSysNovelClassify(SysNovelClassify sysNovelClassify)
    {
        sysNovelClassify.setCreateBy(SecurityUtils.getUsername());
        sysNovelClassify.setCreateTime(DateUtils.getNowDate());
        int index =  sysNovelClassifyMapper.insertSysNovelClassify(sysNovelClassify);
        redisCache.setCacheObject(SYS_NOVEL_CLASSIFY + sysNovelClassify.getId(), sysNovelClassify);
        return index;
    }

    /**
     * 修改分类列表
     * 
     * @param sysNovelClassify 分类列表
     * @return 结果
     */
    @Override
    public int updateSysNovelClassify(SysNovelClassify sysNovelClassify)
    {
        sysNovelClassify.setUpdateBy(SecurityUtils.getUsername());
        sysNovelClassify.setUpdateTime(DateUtils.getNowDate());
        int index = sysNovelClassifyMapper.updateSysNovelClassify(sysNovelClassify);
        redisCache.deleteObject(SYS_NOVEL_CLASSIFY + sysNovelClassify.getId());
        redisCache.setCacheObject(SYS_NOVEL_CLASSIFY + sysNovelClassify.getId(), sysNovelClassify);
        return index;
    }

    /**
     * 批量删除分类列表
     * 
     * @param ids 需要删除的分类列表主键
     * @return 结果
     */
    @Override
    public int deleteSysNovelClassifyByIds(Long[] ids)
    {
        for (Long id : ids) {
            redisCache.deleteObject(SYS_NOVEL_CLASSIFY + id);
        }
        return sysNovelClassifyMapper.deleteSysNovelClassifyByIds(ids);
    }

    /**
     * 删除分类列表信息
     * 
     * @param id 分类列表主键
     * @return 结果
     */
    @Override
    public int deleteSysNovelClassifyById(Long id)
    {
        redisCache.deleteObject(SYS_NOVEL_CLASSIFY + id);
        return sysNovelClassifyMapper.deleteSysNovelClassifyById(id);
    }
}
